package work3.student;

import java.io.*;
import java.util.List;

/**
 * 文件工具类，用来实现学生信息的储存和读取
 * */
public class FileUtils {
    //文件名，写成常量
    public static final String FILE_NAME = "F:\\student.txt";
    public static void writeInfoToFile(List<StudentInfo> list)  {
        //每次写入都将之前的文件删除，这样可以保证数据的更新
        File file = new File(FILE_NAME);
        if (file.exists()){
            file.delete();
        } else {
            //创建ObjectOutputStream 对象，将文件名传入
            ObjectOutputStream oos = null;
            try {
                oos = new ObjectOutputStream(new FileOutputStream(FILE_NAME));
                oos.writeObject(list);
                System.out.println("学生数据已保存");
            } catch (IOException e) {
                System.out.println("学生数据保存失败");
                e.printStackTrace();
            }
            //写入list

        }
    }
    //从文件中获取学生数据
    public static List<StudentInfo> getListFromFile(){
        //因为一开始就得获取学生信息，如果文件一开始不存在，就不需要去文件中读取了
        File file = new File(FILE_NAME);
        if (!file.exists()) return null;
        //这里的异常当场处理了，如果异常则返回空
        try {
            //ObjectInputStream 对象，将文件名传入
            ObjectInputStream ois =  new ObjectInputStream(new FileInputStream(FILE_NAME));
            List<StudentInfo> list = (List<StudentInfo>) ois.readObject();
            //如果不为空，返回list ，否则返回空对象
            if (null != list && list.size() != 0)return list;
            else return null;
        } catch (IOException | ClassNotFoundException e ) {
            e.printStackTrace();
        }
        return null;
    }
}
